package com.ruoyi.framework.security.context;

import org.springframework.security.core.Authentication;

/**
 * 身份验证信息上下文持有者
 * 用于在当前线程中存储和获取身份验证信息
 *
 * @author ruoyi
 */
public class AuthenticationContextHolder {
    /**
     * 使用ThreadLocal存储当前线程的身份验证信息
     * 确保每个线程都有独立的身份验证上下文
     */
    private static final ThreadLocal<Authentication> contextHolder = new ThreadLocal<>();

    /**
     * 获取当前线程中的身份验证信息
     *
     * @return Authentication 当前身份验证信息，如果不存在则返回null
     */
    public static Authentication getContext() {
        return contextHolder.get();
    }

    /**
     * 设置当前线程中的身份验证信息
     *
     * @param context 要设置的身份验证信息
     */
    public static void setContext(Authentication context) {
        contextHolder.set(context);
    }

    /**
     * 清除当前线程中的身份验证信息
     * 防止内存泄漏并确保线程安全
     */
    public static void clearContext() {
        contextHolder.remove();
    }
}

